home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue32 / chemtxt / CHEMTXT.ZIP / dbChemTx.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1998-01-27  |  2.2 KB  |  98 lines

  1. { (C) Patrik Spanel 1998}
  2. unit Dbchemtx;
  3.  
  4. interface
  5.  
  6. uses
  7.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  8.   Forms, Dialogs, StdCtrls, DBCtrls;
  9.  
  10. type
  11.   TDBChemText = class(TDBText)
  12.   private
  13.     { Private declarations }
  14.     procedure DoDrawChemText(var Rect: TRect; Flags: Word);
  15.   protected
  16.     { Protected declarations }
  17.     procedure Paint;override;
  18.   public
  19.     { Public declarations }
  20.   published
  21.     { Published declarations }
  22.   end;
  23.  
  24.   TChemLabel = class(TLabel)
  25.   private
  26.     { Private declarations }
  27.     procedure DoDrawChemText(var Rect: TRect; Flags: Word);
  28.   protected
  29.     { Protected declarations }
  30.     procedure Paint;override;
  31.   public
  32.     { Public declarations }
  33.   published
  34.     { Published declarations }
  35.   end;
  36.  
  37. implementation
  38. uses ChemTxt;
  39.  
  40. procedure TDBChemText.DoDrawChemText(var Rect: TRect; Flags: Word);
  41. begin
  42.   Canvas.Font := Font;
  43.   if not Enabled then Canvas.Font.Color := clGrayText;
  44.   ChemTextOut(Canvas,  Rect, Rect.Left, Rect.Top, Caption);
  45. end;
  46.  
  47. procedure TDBChemText.Paint;
  48. const
  49.   Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
  50. var
  51.   Rect: TRect;
  52. begin
  53.   with Canvas do
  54.   begin
  55.     if not Transparent then
  56.     begin
  57.       Brush.Color := Self.Color;
  58.       Brush.Style := bsSolid;
  59.       FillRect(ClientRect);
  60.     end;
  61.     Brush.Style := bsClear;
  62.     Rect := ClientRect;
  63.     DoDrawChemText(Rect, (DT_EXPANDTABS or DT_WORDBREAK) or
  64.       Alignments[Alignment]);
  65.   end;
  66. end;
  67.  
  68. procedure TChemLabel.DoDrawChemText(var Rect: TRect; Flags: Word);
  69. begin
  70.   Canvas.Font := Font;
  71.   if not Enabled then Canvas.Font.Color := clGrayText;
  72.   ChemTextOut(Canvas,  Rect, Rect.Left, Rect.Top, Caption);
  73. end;
  74.  
  75. procedure TChemLabel.Paint;
  76. const
  77.   Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
  78. var
  79.   Rect: TRect;
  80. begin
  81.   with Canvas do
  82.   begin
  83.     if not Transparent then
  84.     begin
  85.       Brush.Color := Self.Color;
  86.       Brush.Style := bsSolid;
  87.       FillRect(ClientRect);
  88.     end;
  89.     Brush.Style := bsClear;
  90.     Rect := ClientRect;
  91.     DoDrawChemText(Rect, (DT_EXPANDTABS or DT_WORDBREAK) or
  92.       Alignments[Alignment]);
  93.   end;
  94. end;
  95.  
  96.  
  97. end.
  98.